{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from IPython.core.display import Image\n",
    "\n",
    "from reportlab.lib import colors\n",
    "from reportlab.lib.units import cm\n",
    "from Bio import SeqIO\n",
    "from Bio.Graphics import BasicChromosome"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "--2020-12-04 12:18:47--  http://plasmodb.org/common/downloads/release-9.3/Pfalciparum3D7/fasta/data/PlasmoDB-9.3_Pfalciparum3D7_Genome.fasta\n",
      "Resolving plasmodb.org (plasmodb.org)... 128.192.21.13\n",
      "Connecting to plasmodb.org (plasmodb.org)|128.192.21.13|:80... connected.\n",
      "HTTP request sent, awaiting response... 301 Moved Permanently\n",
      "Location: https://plasmodb.org/common/downloads/release-9.3/Pfalciparum3D7/fasta/data/PlasmoDB-9.3_Pfalciparum3D7_Genome.fasta [following]\n",
      "--2020-12-04 12:18:47--  https://plasmodb.org/common/downloads/release-9.3/Pfalciparum3D7/fasta/data/PlasmoDB-9.3_Pfalciparum3D7_Genome.fasta\n",
      "Connecting to plasmodb.org (plasmodb.org)|128.192.21.13|:443... connected.\n",
      "HTTP request sent, awaiting response... 200 OK\n",
      "Length: 23723399 (23M) [application/x-fasta]\n",
      "Saving to: ‘PlasmoDB-9.3_Pfalciparum3D7_Genome.fasta’\n",
      "\n",
      "PlasmoDB-9.3_Pfalci 100%[===================>]  22.62M  2.98MB/s    in 7.3s    \n",
      "\n",
      "2020-12-04 12:18:55 (3.10 MB/s) - ‘PlasmoDB-9.3_Pfalciparum3D7_Genome.fasta’ saved [23723399/23723399]\n",
      "\n"
     ]
    }
   ],
   "source": [
    "!rm -f PlasmoDB-9.3_Pfalciparum3D7_Genome.fasta 2>/dev/null\n",
    "!wget http://plasmodb.org/common/downloads/release-9.3/Pfalciparum3D7/fasta/data/PlasmoDB-9.3_Pfalciparum3D7_Genome.fasta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "genome_name = 'PlasmoDB-9.3_Pfalciparum3D7_Genome.fasta'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Pf3D7_05_v3 | organism=Plasmodium_falciparum_3D7 | version=2012-02-01 | length=1343557 | SO=chromosome\n",
      "Pf3D7_10_v3 | organism=Plasmodium_falciparum_3D7 | version=2012-02-01 | length=1687656 | SO=chromosome\n",
      "Pf3D7_07_v3 | organism=Plasmodium_falciparum_3D7 | version=2012-02-01 | length=1445207 | SO=chromosome\n",
      "Pf3D7_03_v3 | organism=Plasmodium_falciparum_3D7 | version=2012-02-01 | length=1067971 | SO=chromosome\n",
      "Pf3D7_13_v3 | organism=Plasmodium_falciparum_3D7 | version=2012-02-01 | length=2925236 | SO=chromosome\n",
      "Pf3D7_11_v3 | organism=Plasmodium_falciparum_3D7 | version=2012-02-01 | length=2038340 | SO=chromosome\n",
      "Pf3D7_14_v3 | organism=Plasmodium_falciparum_3D7 | version=2012-02-01 | length=3291936 | SO=chromosome\n",
      "Pf3D7_09_v3 | organism=Plasmodium_falciparum_3D7 | version=2012-02-01 | length=1541735 | SO=chromosome\n",
      "Pf3D7_01_v3 | organism=Plasmodium_falciparum_3D7 | version=2012-02-01 | length=640851 | SO=chromosome\n",
      "Pf3D7_12_v3 | organism=Plasmodium_falciparum_3D7 | version=2012-02-01 | length=2271494 | SO=chromosome\n",
      "Pf3D7_08_v3 | organism=Plasmodium_falciparum_3D7 | version=2012-02-01 | length=1472805 | SO=chromosome\n",
      "Pf3D7_06_v3 | organism=Plasmodium_falciparum_3D7 | version=2012-02-01 | length=1418242 | SO=chromosome\n",
      "Pf3D7_04_v3 | organism=Plasmodium_falciparum_3D7 | version=2012-02-01 | length=1200490 | SO=chromosome\n",
      "Pf3D7_02_v3 | organism=Plasmodium_falciparum_3D7 | version=2012-02-01 | length=947102 | SO=chromosome\n",
      "M76611 | organism=Plasmodium_falciparum_3D7 | version=2012-02-01 | length=5967 | SO=mitochondrial_chromosome\n",
      "PFC10_API_IRAB | organism=Plasmodium_falciparum_3D7 | version=2012-02-01 | length=34242 | SO=apicoplast_chromosome\n"
     ]
    }
   ],
   "source": [
    "recs = SeqIO.parse(genome_name, 'fasta')\n",
    "chroms = {}\n",
    "for rec in recs:\n",
    "    print(rec.description)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "16.14167716645667 43.673469387755105\n"
     ]
    }
   ],
   "source": [
    "from Bio import SeqUtils\n",
    "\n",
    "chrom_sizes = {}\n",
    "chrom_GC = {}\n",
    "recs = SeqIO.parse(genome_name, 'fasta')\n",
    "block_size = 50000\n",
    "min_GC = 100.0\n",
    "max_GC = 0.0\n",
    "for rec in recs:\n",
    "    if rec.description.find('SO=chromosome') == -1:\n",
    "        continue\n",
    "    chrom = int(rec.description.split('_')[1])\n",
    "    chrom_GC[chrom] = []\n",
    "    size = len(rec.seq)\n",
    "    chrom_sizes[chrom] = size\n",
    "    num_blocks = size // block_size + 1\n",
    "    for block in range(num_blocks):\n",
    "        start = block_size * block\n",
    "        if block == num_blocks - 1:\n",
    "            end = size\n",
    "        else:\n",
    "            end = block_size + start + 1\n",
    "        block_seq = rec.seq[start:end]\n",
    "        block_GC = SeqUtils.GC(block_seq)\n",
    "        if block_GC < min_GC:\n",
    "            min_GC = block_GC\n",
    "        if block_GC > max_GC:\n",
    "            max_GC = block_GC\n",
    "        chrom_GC[chrom].append(block_GC)\n",
    "print(min_GC, max_GC)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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C5555pm2traIiIj169fX1NRs27YtOzubEPL44483Nzd339SaNWueffbZ33777U9/+hMhxGazvfrqq1ddddW6detuuukmQoiu6+7Nvv/++08//TQhJDo6+sknn3zttddmzJhBCNm+ffsNN9xAa3766Sc6DhwTE7Ny5cq1a9deeOGF+fn5g7i7+pW5u7CwsMWLF48dO5Z+eMMNNyxevDgqKuqll14qKSkhhCxevHjjxo2fffZZcnIyIeTzzz9vamrymOGJJ56gx+rmzZv39ddfv/feewkJCYSQJUuWHD582CD8N998Y7FYXnnllZUrV44aNYoQ8ttvv7300kuEEFVVafsYHx+/atWqDRs2PPDAA/TzK1as6L6RqqqqkpKSSy+99Oyzz77iiiv6tfdyc3MJIZ9++ul3331Hx0rWr1+/d+/eZcuWrV27lvZ5VVVVRzsCCgDHBc7tJQAcnfvonUdTpkxRFEX3dPSuurr6008/XbVqlXtTtM2KiIigH55xxhmEkKCgoHfffbe1tVXX9fz8/H379qmqSgvcR8Luuece+pnVq1fTz4wZM4Z+pqOjQxRFQsjMmTPpZ+ghIkmSDhw4QD/jcDgmTJhACBEEIT8/X9f1v/zlL3Q7X3zxBa1RFCUzM5N+clCO3vUrc2/u6eOysjL6mebm5h9//PG5555z17gPUh48eFD3dPSONnMRERHt7e30M59++unMmTNvuOGGvXv36kc/eieK4r59++h/KSkpkWXZnV9V1ZycnJUrV65fv96dxN/fnxByyimn0A/p0TtCyNKlS7v/UH0/eueOpOv6rbfe2mOXuk/xP/roo0fbgQDAHY7eAQw/giDMnz//xx9/PNrQZWxs7IIFC6ZOnfrOO+/cfPPN06ZN27ZtGyFE/+81cCeddBIhpK2t7a9//WtwcPCECRNee+01d+vT3fTp0+k/QkND6T/cTYCfn19AQAAhxOVyEUKqqqroQbjZs2ePGTOG1lit1uuuu45+a3o0a9++fYQQURTPOussWiNJ0rnnnjvgvXIsmfsoNDT0rLPOWrRo0VdffXXXXXedeeaZL774Iv2Suy3rrrKysrKykn5f+u0IIQsWLNi8efNrr71G+92jGTt27Pjx4+m/k5OTJ02aRAjJzc2lj864ceOuuOKK0NDQt99++4YbbsjOzu7o6CDdHlm3gezSadOm0X+EhITQf9BfGEKIe45YUZRj3j4ADDXcGAVgGFiwYMGll15KCLFYLOHh4dnZ2cZ36ygqKrr++ut/++03+mFgYGBgYGBbW5u7e1uyZElJSYl7LjUnJycnJ2fZsmWXX375O++8Q48Yuf8v/Yf7ki/3S373TxJCGhsb6T8SExO7h3F/WFdXRwhpb28nhAQFBXW/OrD7Nvuud0/T38x91NbWdtNNN7lHECRJCg8Pr6+vJ0e5rYn7jK07Sd/FxsZ2/5A+0LquNzU1+fv7r1+//vrrr3dPNkRHR8uyrChK776cHj7sofse89iYEkKsVquPjw/9d+8deAx7DwC8D0fvAIaB7Ozsiy666KKLLpo/f/7s2bONeztVVf/0pz/99ttvAQEBTz755O7du5ubm+kBIXcTYLFYVqxYUV5e/sILL5x33nn0yjxCyAcffPD+++9331rvl/OjvcCHh4fTf9TU1HT/vPvDqKgo8t9GwW63dx8IbWhoMPiJuut+0IgeuOqt75n76Oabb6a93U033bRx48b29nb3zZZ791Wk21FD2gJSDofj0KFDR2tJ3ex2e/cP3ZdCBgQE1NbWnnvuuYWFhQkJCcuXLy8sLKytraVdcu8YPWZr6B5QVdX9mc7OTuMkvf87AAwXaO8AzObQoUNFRUWEkKuuuuqee+6ZNGmSLMu0x6Iv0k6n89NPP33kkUc++uijW2+99Ztvvuns7HSPGtAr649BQkICPVC3ceNG9+1LdF13H/Q69dRTCSH0bKOiKO67hDidTro8lwH3AUV3w1RbW9u9eRpSdIxg/PjxL7/88uzZs319fd1XB3qUmJhID8Jt3rzZfRe9n3/+edSoUbIsv/rqqwb/l7bj9N9NTU179uwhhMTFxYWFhf3666/02OdDDz103XXXpaent7e392gH3Xo0fHQH2mw2d3984MAB5g8OAMMU2jsAs/H19aX/WLNmTXV1dXt7+3333UenNekBG4vFcu+99z744INLly798MMPnU5na2ur+54g48aNO+ZvTW+r5nQ6Tz311Hfeeeerr74677zzNm/eTAg5//zz6Ryoe3Dhuuuu++STT9auXXveeecVFxcbb9l9X5LHHnts9+7dmzZtuuiii452enHQ0V1aUFCwdetWRVHef/999w2lu7q6etcLgkCvOGxvbz/77LM/++yzlStX0qFdQsjJJ59s8L06OzsvuOCCbdu27dy58+KLL3Y4HISQyy67jHR7ZL/44ou2trba2tqrr76a7gSPMbqjo74Oh2Px4sV5eXmrVq265557+r4HAGB4QXsHYDZpaWlz584lhOTn5yckJISEhDzxxBNpaWmEkNbW1vr6ekEQ3nrrLV9fX0VRLr/8ch8fn7CwMHpDkzlz5tBO4tjceeeddHKzuLj46quvvuCCC+hhuYkTJ7rv3DF37txrrrmGEFJTU3PppZeedtppq1evpncwMbBw4UJ68nfz5s1TpkyZPXv24cOHTzzxxGOO2i/0VGxXV9fMmTN9fHyuvPJK91pwR7vLyX333Td58mRCyJYtWxYuXOi+PfJ9993nnjvxKCYm5vfff58xY8a0adPWrl1LCElPT6c3QDnjjDOSkpIIIT///HNoaGhsbOznn39O711ifLMVQsj1119P//HCCy+MHj36kksumTp1qvsaOwAwGYxWABy/4uPj6R1MjJec9/X1pWXuA29ffvnlvffe++2337a1tY0ZM+auu+6Kj4+nN0Pev3//vHnz5syZc/DgwWeeeWbt2rWVlZUWiyUzM3PhwoW33HILPYuXkpJCt+m+xW5wcDD9DF0SjZo3b15HR4f7tiaiKK5ateqTTz5ZsWLF3r17Ozs7MzIyLr300ltvvdV95IkQsnz58nHjxr3xxhvl5eWjR49eunRpREQEvSwsLCyMEGK1Wun3cs+QhoWFrV+//r777tu0aZPVaj3zzDMfeeSR9957LyAgICYmhtYcW+bexo4dS/+XO/M///nPgICAt956q7KyMikp6a9//et11113+eWXE0Jo0xYUFET/i3uz/v7+GzdufOaZZz7//PPi4mIfH5/x48ffeOON7huXpKen0/9Cf2S3cePGPfzwww888MDu3buDgoLmz5//73//m9YEBASsX7/+nnvu+e2331RVPeGEEx588MHi4mJ6+rukpCQlJWXChAktLS2EEIvF0n2z8+fP//jjj5966qmCgoK4uLhFixYtWbLkoosucjgc9KgqIWT69On+/v7d/2PvkOHh4fQz9A0DAByfBOZ1vgAAMNR0XadXy5122mnd1y4DADgGODkLAAAAYCpo7wAAAABMBdfeAQAcFy6++GJCiHvFWwCAY4Zr7wAAAABMBSdnAQAAAEwF7R0AAACAqaC9AwAAADAVtHcAAAAApoL2DgAAAMBU0N4B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s2aNHj26vyEJIRs3btywYYOqqnPnzj355JMHJVv3kOvWrdu1a5c75KhRo9atW9ffB2vdunWbNm2SZfncc88dO3bs4KaaPXt2dnb2Mew6Ki8v77vvvjv33HNHjRrV40tff/317t27x4wZs2DBAlHs3wELRVF+/fXX3bt3Dzykrut5eXnff//9eeed1/sJ3Pirxlwu17p162jImJiY2bNnZ2Zmrl+/fv78+ccW8rvvvvvzn/+clZXV/Utr1qzZvHmzv7//hRdemJqa2t8t9wh50kknZWRkHHPI3Nzc77///vzzz8/MzOz+pX379v3www+EkD//+c+jR48+hpC//vrrnj17uofcsGHDeeedd8whL7jggoyMDI81iqL8+9//Pvvss0844YT+bn9w6Mclh8Px5JNPxsbGxsTEPPbYYz///PMbb7wxcuRIQsh1113Xr0198MEHl1xySVhYGP15c3NzBytkV1cXDRkbG+sOOWLECELI3/72t75vR1XVq666yv2ISJL0xhtvDGLIJ554IiYmJjY29vHHH//pp59ef/31pKQkQsjf//73fm3q9ddfP/nkk93P+8uXLx/0kHFxcU899dTq1atfe+01GvIf//jHMW/2hhtuIIT8/PPPgxKys7Pz8ccfj46O7h4yMTGREHLzzTf3d2s9XuPffPPNwQr52GOPRUdHx8fHP/3006tXr3711VcTEhIIIbfeeusxbHDnzp0nn3xyamrqDz/8oGnaIIaMiopKSEh45plnaMj4+HhCyO23396vTZ1xxhm9n9Nef/31gYfs6Oh49NFHu4f8z3/+ExsbSwi58847+7Wpq6++mhDyzDPPbNiwQRTFG2+8ceDxuoeMjIxMTEx89tlnu4dcvHhx37fT1dU1f/58QRA+/vjjX375xWKxvP/++wNJ9eCDDwYFBblTvfzyyzExMYSQe+65p1+bWrFixUUXXRQcHEwIEQShurq6+1dbW1vnzp07ffr0nTt3zp07t18vDXa7/YEHHggKCkpKSnruuedWr1790ksv0ZD33ntvv0I+//zzF154IQ0pimJNTU3fv9r3kMuWLaMho6OjCSFLly7tV8hly5Z1j1FXV+f+ksvluvDCC91/PhaL5ZNPPulXyPvvvz8wMHDEiBE05IsvvkhX7nrggQf6G/KCCy4ICgqir4MNDQ3dv/rYY4/NmTOHdqWyLH/55Zd933J7e/vSpUtpyOeff3716tUvvPACDfnQQw/1K+Rzzz3XPWRjY6PHMlVVFyxYQAjZtWtXv7Y/iI7H9q64uJg25lOnTu3+ABcXF/v4+Lz77rv92pqqqvX19eHh4YSQlJSUwQp5+PBh+j5y2rRp3R/gw4cP+/j4rFy5su+beu6550455ZSXXnrp73//uyAIhBBfX9+mpqaBhywqKqLvFKdPn949ZFFRkdVq/eCDD/q+qd27d9O/eU3Tzj33XEJIYmLiwBPqul5YWEhDnnDCCd1/6sLCQqvV+tFHHx3bZh9//HFCSGBgYFdX18BDFhQU0KeVGTNmNDc3d/98f58NdV1fv35993ZEEITKysqBh8zPz6dvdmfOnNk9ZH5+vsVi+fTTT/u7wWXLlomiOG3atI6OjoHHc4ehb3bnzp1rt9vdn8/Ly7NYLJ9//nnfN/X777/37u0mT56sKMoAQx46dIiGPOWUU7qHzM3N7e/ryldffUUI8fPzo6noMdrdu3cPMKGu63l5efQg5amnntr9ATp48KAsy19//XXfN3XllVcSQq644gr6YVpaWlhY2LE96Lm5ufRnPO2007pv4cCBA5Ikffvtt/3amqqqFRUVvr6+hJApU6b0+BI9Kr9hwwZd1x944AFCSFFRUV82e/DgQRryjDPO6B5y//79kiR9//33/Q1ZXl7u4+NDXw769VUDBw4coEfRzjzzzO4h9+3bJ0nSjz/+2N+QpaWlFouFPtN2/9LSpUvPOeecl19+2X2UITQ01OFw9GWz+/fvT0lJIYScddZZnZ2d7s/v3btXFMX+vrVWVfXIkSM05MyZM7t/ac2aNfRHdrlcs2bNIoRMnDixj5vNyclJTk4mhJx99tndQ+7Zs0cUxV9++aW/IUtKSmRZJoSceOKJRyu76667CCHx8fGD9a74GBx37V1xcTFtxeLj43s077quL1y48PDhw8ewWbrNm266aTAy6ocPH6YbTEhI6N28X3TRRSUlJX3f2qOPPur+DbjtttvoH9jAW/6ioiJ6zDIxMbF3s3jBBReUlpYe25b/7//+j/7sA0yo63phYSENmZSU1L0joc4///zy8vJj2OxHH31ktVoJIeeff/7AQxYUFISGhh4t5Pz58/vbnJ1zzjllZWXObgYeMj8/n4YcMWKEzWbr8dVzzz23x5EPpn//+9+EkPDw8H4dbzB26NChkJAQQsjIkSNbWlp6fPXss8+ura3t+9b+9re/rVq1qqCg4MiRI0eOHCkuLk5JSdm0adMAQ+bl5dGQycnJvUOeddZZ3Y98MP39738nhERGRtIPaUPWry7Wo9zcXHokJiUlpbW1tcdXzzzzzN5Pnkezb98++pzz008/0c9EREQQQn799df+pjpw4ABNlZqa2tbW1uOrp59++jG8a+3q6qJ/yw8++GD3z7/66qvd37FffvnlhJC3336bucH9+/fTkGlpab1Dnnbaab3/xpk6OztpU/Lwww/396se5eTk0OND6enp7e3tPb46b9683n/jTHa7XZIkQsj//d//uT+padq//vUv94d0NxJC+vLqsG/fPhoyIyOj+7sg6pRTTun9m8nU3t5OQ/773/8+Ws0tt9xCCJkwYUJfNrh3797AwEBCyNixY10uV4+vzp07t/fvAFNrayu9DODRRx/1WPDyyy/TR7y/JxsH1/HV3rlcrvHjx9Nfr1WrVvUu+OKLL7p/SN9hKIpi3CBv376dbrO/b8s8cjqd7hOUn3322WCFpFauXEkP59TX1w8w5JgxY2jIHnmob775pkd9H0O2t7fTg20vvfTSQBLSb+q+fuKrr74arJDr16+/+OKL6evowE9zOxwO9+U+PfIcW8gtW7aEhIRcddVVg3XWmIZ0X9Dz3XffDTzkt99+a/BneGy6urrcl/v88MMPAwypaVqPhvWVV17561//OvCQ7st93O3OMYfUdf3GG2+kWysuLnY6nb6+vr6+vlVVVQMJ2dnZ6b7cZ/Xq1QMM+eCDDxJCJEmir9Dl5eV0y/09cN7Z2em+5HHt2rV9T2W82Z9++oluc8uWLe5PdnR0REZGkm4nyunRuGXLlhlvraOjw32R67p16wYrJL0gjBCybdu2/n7VY0j31W/r16/vY8jevUsP3333Hd3mjh07jlazbNkyQoifnx/zpIfdbqfH7ch/D6AOSshvvvmGbvNoBziamproJTF9Oftkt9vpNV2EkN9//32wQtJD8oSQPXv29P7q119/ffXVV9PfT48vvl5zfLV3r732Gt1r2dnZR6txOp0PPfTQaaedFhgY+Oqrr27dujUqKurPf/6zwWb/+c9/0l/ZQTnH9Morr9CQo0ePPlqNw+F48MEHacjXX399y5YtkZGRF1xwAXPjTzzxBCHk4osvHmDIl19+mYYcO3asQcgHHnjg1FNPDQgIWL58+ebNmyMiIi666CKDza5du3bSpEmzZs3q16mfo3nxxRdpyHHjxh2tpquryx1yxYoVmzZtioiIWLhw4dHq8/LyzjzzzJycHNolV1RUDDDk888/T0MavFns7Oy8//77aci3335748aN4eHhl1xyicfic845h/zXJZdcwnwq6YvnnnuObtDghEVHR8f9998/b968gICAd999d8OGDeHh4ZdddlnvSrvdTq/fGjly5Hvvvffqq6+WlZUNPOQzzzxDQ06ePNkg5NKlS2nIlStXrl27Njg4+PLLL2duvL6+PiUlZeAHGp966ikacurUqUersdvt7pAffPDBmjVrgoODr7zySo/FX3zxBd3ghRde+P777w/kegM3+ixBDE/2tbe333fffaeccoq/v/9HH320evXq4OBgj+3vRRddRAhJT0+nH7777rt04x7fJxh47LHH6H/scVqtu7a2NneqTz755Oeffw4KCrr66qsNNnvrrbcSQqKiolRVdX9yxYoV3Vs095TSihUrjEM+8sgjtNLgtFpbW9u9995LQ3766ac//fRTUFDQtddea7DZm2++mRASHR3dPWQfv9rbv/71LxrypJNOOlpNa2vrkiVL5s6d6+/v//nnn//www9BQUHXX3+9wWb/8Y9/EEJiY2MN3h4vXryY9O2KZ/qqSgiZM2fO0WpaWlrcIb/88svvv/8+MDDwhhtuMNgsPdodFxfXO6SmaT/88MPo0aNPPvnkPp5Rfeihh2jIU045xSDkPffcM2fOHH9//6+//vrbb78NDAw0vkD2b3/7GyEkISGhd8jt27fPnz+fXjfi4+NzDMcvB9Hx1d65D909/vjjBmWlpaXu3pleDDtp0iSD+unTpxNCzj777EEJ6T509+STTxqUuZ9x9u7dSy+G7XHtSG+KoowaNSo+Pr5fp6g8ch8Ve/rppw3KDh8+TMv27dtHrzM92gvGc889Ry9f8PX17fspBmPuA07PPvusQVlhYSEty8nJoW+Jelw74lZTU3PKKadUV1fT7tb4t6KP3IdJjA8M5Ofn07L9+/fTkB5f5DRN+/jjj2+44QZ6vokQcv/99w88pPuoyQsvvGBQlpeXRwgRBOHAgQP0BJzHFzl3i/OXv/yFviSEhIQUFhYOMKT7gITxcd+DBw/SkAcPHqSXQBi8yLldf/31zz///AAT6rpOf8kJIf/5z38Myvbv309D5ubm0pAGL3IzZsyg25w0adKRI0cGHtJ9QOLVV181KKNnXUVRzM3NpZdAeHyRo+3d7Nmz6Yf0enDSt9Nz3dFZKMIabdmzZw9NlZeXRy8nOPXUUw3q6e+2+7pAil51FxAQQN8d0RO15CgH5Nw0TaOvF4Q1GbZr1y5CiCRJ7ssJTj/9dIN6+ru9aNGiY/hqD6qq0tcLwupWd+zY0SPkmWeeaVBPf7evuuqqoxXY7faEhIS0tLTe1yT0DklfLwjrhPi2bdsIIbIs5+fn03Pif/rTnwzq6WziNddc0+PzDz/8MB0RCwgIMH5Rc1MUhT4VE0KML9nfsmULIcRiseTn59PTzeecc87RijVNo4cPe594LS4uPvXUU202G+19jX9nvOA4au/q6urIfxlferxp0yZCSGpq6oMPPvjaa6/FxcU99thjRyuura2lp8lffvnlgYesqalxh9y7d69B5caNGwkh6enp999//+uvvx4bG/vEE08Yb3zJkiWBgYH79+8fYMiqqip3yJycHINKeo1/Zmbmfffd98Ybb8TExDz11FNHK87Pz582bRrd7GuvvTbAkJWVle6QBw4cMKhct24dISQ7O3vJkiVvvPFGdHT0M88807vMbrefccYZBw8e1HWdDn8MvHNyv5EgrJnrtWvXEkJGjx599913L1++PCoq6rnnnjOo37FjB70iJCwsrI/v6Y+m+w1WDh06ZFD5yy+/EELGjh27ePHiN998MzIy0mNLRE9Gu4920+7E+D03k/uNBCGkoKDAoPLnn38mhIwfP/7OO+9cvnx5eHj4iy++aLzx7du3T5gwYeDHQd1vJAjrIv0ff/yREDJx4sTbb799+fLlYWFhR2sHly9fPmvWLPpYC4Lg8QxRv7jfSBBCiouLDSq///57QsjkyZNvvfXWN998MzQ01GM7SA/9xsbGdnV1tbW10WuGxowZ069U9J0DZdzC0vP+U6dOvfnmm2kqg3bQ/cN++OGH7k/a7XZ6Ybv7ADm9sYUsy8bXUdF3DpTxAemvv/6aEDJ9+vTbbrvtnXfeCQkJMWgH3T/7xx9/3N+v9kbfOVDGF/V++eWXhJCZM2feeuut77zzTnBwsEE76P7ZDS63uOaaa8LCwvpydbv7ek1CiPFFvZ9//jkh5MQTT7zllltoSIN20P2ze7zqae/eve7rZDwW9EDfSFDGx/U//fRTQshJJ5100003vfPOO0FBQe+8887Rit0/e48Tr01NTfPmzaNviuhz5qC84RyI46i927p1K91rkiQZX2z+6KOPEkL+8pe/0KsvjU+5us81GD8V9tHmzZvp1mRZNn45oVemX3755Y888ggzpK7rH330ka+vbx8vzjDmnihkhqRDEldccQW9RJQZsqamxt/fnxAyd+7cAYbcsGEDDenj42N8Ld3DDz9MCLnyyivpMV2PIRVFWbhwIb0YvKurKyAggBCyefPmAYb87bffaEhfX1/jkPQCpkWLFtEmvi+XAdDZXuZTD9Ovv/5Kt+Pn52cc8v777yeE/PWvf6UHnj2GrK6upltznwGnZ5P7cgjNwJo1a+hm/f39jUPed999hJCrrrqKvkdn7klVVU844YTffvttIPGo1atX05CBgYHGlUuWLCGEXH311fSdxtFCXnHFFYIg7N69e+PGjfSCcYOLJfqIdpaEkKCgIOPKu+++mxByzTXX0HcaRwvZ0dExe/ZsQsiYMWPc9wTt75th2koSQkJCQowr6UThtddeSw+HGz++9FKwHrefoO+cyX8PyTidTvqkZHAAlXJfURoaGmpceccddxBCrrvuOno43Djks88+S59sPQ6OGH+1N9pZkm7jOEdD5/Cuv/56+v7HOOTTTz9NCLFYLEebyXj66acDAgLo22Mm2lkSQqKjo40r6RjE3/72N/obZRzyySefpCGPdviwsLCQ/h0tWLCAGZJ2loSQ2NhY48qbbrqJEHLDDTfQN2nGIenzttVq7X7itaur6+yzz965c6eu6w0NDTSk8ftYLziOVq3QNI3+IzQ0lL6DPBp6zKmsrIz+6vj5+RkU08taR40a5b4OdFBChoWF0XeQxiFra2vp05lxyDVr1tx22207duyg55EHK2RERMQghiSExMTEnHrqqYSQtra2wQoZHh5ObwfDDEmfcz2GfPjhh+vq6vbt2/f888/fd999drtdFMUtW7Z0f78+kJAREREDD9nDwoULCSGiKNJzFgMPGRkZ2ceQt99++9FCuo+XuK8RLCsrI4TQV9CBh4yKiupjSPrqxdyTb7/9dmpq6pw5cwYSr3dI40p3SHplmMeQ77333vvvvz9jxoxJkybNnj37kksuIYQcOHCguLh4ICF1Xaf/cJ/CY4ak134dbU/6+flt2LAhNzf3q6++6ujoIIRkZGS4J0KGKFVdXZ1xKoo+e8+YMYOeAafch6vPPPNMQsgvv/xCY9Pbu/QlpPsULTMkvTihLyFnzpzpvrtq379qELKPv4R1dXX0wepLyFmzZtHTuD188cUXy5Yty8nJ6eO9go8hJL2ori8hZ8+efbSnxPT0dPoS2ZcXoGMISW+V2peQJ510Ej2NS912222CIGzcuPH5559funSpqqqBgYHff//9AP/YB4pnb/m/3CdnfXx8DCaVnE4nPdOxZMkS5jZdLhf9o7rrrrsGJWRtbS0N6evra3BOzeFw0JfD++67j7nNNWvWZGZmuu8A8tNPP/UeMu8X9wEYPz8/g5BdXV3097hfJzGvvfZaQojx1dB94T6DbHykpLOzk971qsdtEbrTNI3eFLc345OVTBUVFXQ7wcHBBmUdHR30vlb9uiqRPkMZXOLdR7T9IqwDJ3a7nV7w1/22CL3RE7jkv0e7HQ4H/V8DPNPtPs0dFhZmUNbe3k7f2hncFqG7pqam1NTUgQ/QUO4zyOHh4QZl7jOYR7stAkXPGN599930wzfffLP7jj1m7jPIxkd3Wltb6Vs74+uYu6NXsFmtVoPJyqNxvyswPpxjs9nogQ3jC5eptrY2+mfVYz/TnO7JNvqSHBsb2/2WZh65z5PGxcUZlDU3N9OQxtdXUK2trfQPxON+Nv6qR+53pMZ3nmpsbKQXHfXlDGBLSwv9jfW427/88svx48e7b/fz+eefM69zcJ9FTUpKMihraGigIY2vCaaam5tpSONL6+iCIu4/KwPus6gjR440KKurq6NvOJkXgei63tTURP+sul8v3tXVRXuSHiRJGvhl9ANxHLV3uq7TI0OEkDVr1vT40ttvv01PXLpPj27fvp25Qff9Y4/hHk5Hc8oppxxtmytWrKCp3KdH6dFaA2vWrImIiPjiiy/Wrl1L7/dtPLvaR+6DGb1PWr355ps0lfv0aL9usnrSSSeJojgo92U96aSTaIDec/VvvPEGHYx3nx41uNLR5XLt7IZer/3MM88MSsgTTzyRBuh91dSKFSvoBXnu06PGVzrqut79BA29X09/b0/q0cyZM2mA3uejX3311by8PL3b6VHjKx3pGl/+/v70Q3oqUJKk/Pz8AYZ0r8yzdevWHl965ZVXaCPuPj1KMzPddNNNfWkU+m7KlClHe3p5+eWX6U5w36rDeJ/QY0vuV98XXniBDNKd1d2nUHs/vbz00kv0lJD7Zhx9nIk5fPhwUFBQf2/a3N3EiROP9nzy4osv0hjue3P05f7D7jOAPf726elLOqmgqio9FNfHZTbc03u9n0+ef/55msp9b46+NOLuM4Ae//aNv3o048aNO9r/WrZsGb02zn1vjr7cY5VeW+bxb//LL7+MiYn59ttv165d+/PPPz/55JMGsxfduW+81Xubzz77LN117rHxvozpfPLJJ7TY+CrnUaNG+fn59fE9kvtgZO/3+c888wzddZ999hmt6cs9Vj/66KPeG+zs7HS/+mzbto029G+++Wa/HvShcHy1d7m5ufTQcXp6uvsxbmxsvPPOO9966y36IT3zzTybTtEBZuYlaP1y8OBBeug4IyPD/SLU0NBwxx13uK/HpFcHxsfHG29q9erVvY8DD8o9Rw4cOEAPHWdmZrp/ERsaGm6//Xb3DBG9OtD4PWJtbW18fPzkyZNps7Vjxw5JkgZrBa39+/fTkFlZWe5XyoaGhttuu8297Ae9OtD4PWJ3Bw4cIP250oVp37599J1Zdna2O2RNTc0//vEP9ysKvTpwxIgRxpui10ItXrxY0zRFUebPn9/9hqID4b515+jRo90XfFRXV994443ua9Lp1YHGb2SpqVOnBgYG0uO+dN3S/i7T5NGePXvoNZFjxoxx9xzV1dV///vf3fcKoVcHZmZm9nGDY8aM6ePt9fto9+7dNOTYsWPdLUhVVdUNN9zgXpuEXh1ocPMmit7355///Cf9kC5D16/1bI5m165d9OTAuHHj3BfCV1VV0fs80w/p1YEGN2/qrrCwMCkpKSoqyuP96vpo69at9GDb+PHj3akqKyuvv/5694op9E+gjxcg0hne3od7W1paAgIC6KprtAXs41Cqrutbtmyhr74TJ050j4BUVFRcf/317ntN0ytVxo8f35cN0uW8IiIijuGrR7Np0yYasvuodUVFxXXXXee+nJ9eBNLHlRvoX3FUVFSPz69atar31Tt9vDH477//TkNOnjzZ3b2Vl5dfe+217puY0usrDG6E1B1dnbbH0d+ioqKIiIgTTzyRXhRIV8zr+804N27cSENOnTq1e8hrrrnG/TpLL/EyuBFSd3Roz6D9oMcjgoKCBvd56dgcX+2drut5eXn08JggCOnp6RkZGWPGjOl+MI++Jz7aXabcPv7447vvvpseYyeEXHfddYNymITKzc2dO3euO2R6evqYMWO6PzOefvrphBDjm6zm5OS4747hlpKSMvAlldzbp1dMu0OOHTu2e0h6rNT4NGtVVRU9uy2K4owZM84666yNGzcOSjxq37599PCYIAgZGRnp6enjxo3rfliU/jIY33SqO3pTjwHOAfSwd+/e3iG734KBHis1vumU/t9+mhASExMzZ86cY1glzMCePXvoWj3ukOPHj+9+7JYeK+3LAGxubm5KSsqdd965ZMkSHx+fBx98cLDW1dm9ezc90OgOOWHChO43bqX7uY+rsp566qmDeGtot127drlDZmZm0pDdDzDTrzKXwFEU5aabboqLi3vzzTevvvrq4OBg45ut9MvOnTvpdB4NmZaWNnHixO5/m/RY6S233GK8naqqqkcffTQ5OXnJkiVHWz2z73bs2EG/ryiKWVlZaWlpkyZN6n7Ym47e33bbbcbbeffdd+mVefQHvPXWW3ucKnnrrbfS0tKWLVuWmpp6zz339Os5c/v27TSkJEnukN17GnoE94477jDYiKZp77zzDr0kn4a87bbb3M8Jxl/ti23bttGLzNwhJ0+e3P3Y/KRJkwjroqPeMW6//Xb3c8KmTZvcr49ufWzFqK1bt9IH1B1yypQp3e8+PWHCBMI6kUpD0mscacg77rjD/ZyQl5dH325JkjRz5sxzzjmnv+s5bdmypUfIqVOndj+BQI+VGl/rRUO6L0gVRfHOO+/0eDPne+65hxDSl3vceoGg//fyw+NKZWVlbm6uy+VKTU113x3tePMHCdnW1rZ7925N00aNGkXvdjvoKioq8vLyXC5XWlqae2GDY5OTk1NdXT1ixAj3CP1gqaioyM3N1TSN9srHtpH8/PyysrLExMTs7GzjCYNjU15enpeXN8CQhBB6vtvhcEycOJGe7B5ENKSu6xkZGe6b4R2DmpqaIfqFJISUlZXRw94DDFlfX79//35fX9/JkyfTq0gHkTtkZmbmsY2O7d+/X9O0sWPH9n6l55iqL8rLy/Pz8ydMmMC8cN6j0tJSejB+SEMOkDtkVlaW+46Mx5sjR47QMwZDFLK5uZleRTdmzJhje6zJ0Id027lzZ2NjY3p6untxFI6O0/YOAAAAAI7NcXRjFAAAAAAYOLR3AAAAAKaC9g4AAADAVNDeAQAAAJgK2jsAAAAAU0F7BwAAAGAqaO8AAAAATAXtHQAAAICpoL0DAAAAMBW0dwAAAACmgvYOAAAAwFTQ3gEAAACYCto7AAAAAFNBewcAAABgKmjvAAAAAEwF7R0AAACAqaC9AwAAADAVtHcAAAAApoL2DgAAAMBU0N4BAAAAmAraOwAAAABTQXsHAAAAYCpo7wAAAABMBe0dAAAAgKmgvQMAAAAwFbR3AAAAAKaC9g4AAADAVNDeAQAAAJgK2jsAAAAAU0F7BwAAAGAqaO8AAAAATAXtHQAAAICpoL0DAAAAMBW0dwAAAACmgvYOAAAAwFTQ3gEAAACYCto7AAAAAFNBewcAAABgKmjvAAAAAEwF7R0AAACAqaC9AwAAADAVtHcAAAAApoL2DgAAAMBU0N4BAAAAmAraOwAAAABTQXsHAAAAYCpo7wAAAABMBe0dAAAAgKmgvQMAAAAwFbR3AAAAAKaC9g4AAADAVNDeAQAAAJgK2jsAAAAAU0F7BwAAAGAqaO8AAAAATAXtHQAAAICpoL0DAAAAMBW0dwAAAACmgvYOAAAAwFTQ3gEAAACYCto7AAAAAFNBewcAAABgKmjvAAAAAEwF7R0AAACAqaC9AwAAADAVtHcAAAAApoL2DgAAAMBU0N4BAAAAmAraOwAAAABTQXsHAAAAYCr/D3Mb2w6LfHtCAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "chroms = list(chrom_sizes.keys())\n",
    "chroms.sort()\n",
    "\n",
    "biggest_chrom = max(chrom_sizes.values())\n",
    "\n",
    "my_genome = BasicChromosome.Organism(output_format=\"png\")\n",
    "\n",
    "my_genome.page_size = (29.7*cm, 21*cm) # check\n",
    "telomere_length = 10\n",
    "\n",
    "bottom_GC = 17.5\n",
    "top_GC = 22.0\n",
    "for chrom in chroms:\n",
    "    chrom_size = chrom_sizes[chrom]\n",
    "    chrom_representation = BasicChromosome.Chromosome('Cr %d' % chrom)\n",
    "    chrom_representation.scale_num = biggest_chrom\n",
    "\n",
    "    tel = BasicChromosome.TelomereSegment()\n",
    "    tel.scale = telomere_length\n",
    "    chrom_representation.add(tel)\n",
    "\n",
    "    num_blocks = len(chrom_GC[chrom])\n",
    "    for block, gc in enumerate(chrom_GC[chrom]):\n",
    "        my_GC = chrom_GC[chrom][block]\n",
    "        body = BasicChromosome.ChromosomeSegment()\n",
    "        if my_GC > top_GC:\n",
    "            body.fill_color = colors.Color(1, 0, 0)\n",
    "        elif my_GC < bottom_GC:\n",
    "            body.fill_color = colors.Color(1, 1, 0)\n",
    "        else:\n",
    "            my_color = (my_GC - bottom_GC) / (top_GC - bottom_GC)\n",
    "            body.fill_color = colors.Color(my_color, my_color, 1)\n",
    "        if block < num_blocks - 1:\n",
    "            body.scale = block_size\n",
    "        else:\n",
    "            body.scale = chrom_size % block_size\n",
    "        chrom_representation.add(body)\n",
    "\n",
    "    tel = BasicChromosome.TelomereSegment(inverted=True)\n",
    "    tel.scale = telomere_length\n",
    "    chrom_representation.add(tel)\n",
    "\n",
    "    my_genome.add(chrom_representation)\n",
    "\n",
    "my_genome.draw(\"falciparum.png\", \"Plasmodium falciparum\")\n",
    "Image(\"falciparum.png\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
